1) Le scene tridimensionali sono composte da oggetti 3D che a loro
volta sono costituiti da superfici 2D; queste vengono scomposte
in triangoli e i triangoli in punti. Ogni triangolo rappresenta
l'elemento base di tutte le funzioni grafiche 3D in quanto è
il poligono più semplice che può essere utilizzato
per descrivere geometricamente le superfici più complesse.
Sui triangoli, inoltre, si possono realizzare operazioni matematiche
per la traslazione, la rotazione e il ridimensionamento nello
spazio.
2) La rappresentazione sullo schermo di una scena 3D deve tenere
conto dei soli oggetti in primo piano e delle porzioni visibili
di quelli presenti sui piani posteriori. Per determinare quali
sono i triangoli da rappresentare in ogni istante si utilizza
la tecnica detta Z-buffering. In una zona di memoria detta Z-buffer
viene conservata l'informazione relativa alla posizione di ciascun
punto lungo l'asse Z del sistema di riferimento; confrontando
le coordinate Z dei vari punti si stabilisce quali si trovano
in secondo piano.
3) Gli oggetti possono essere visualizzati con diversi livelli di
dettaglio: wireframe (fil di ferro) con cui vengono visualizzati
solo gli spigoli e non le superfici; flat shading (ombreggiatura
piatta) con cui si rappresentano anche le superfici ma in modo
piuttosto grezzo; Gouraud shading (ombreggiatura di tipo Gouraud)
che aggiunge maggiore dettaglio alle superfici; Phong shading
(ombreggiatura di tipo Phong) che assicura il massimo realismo.
4) Gli oggetti 3D possono essere colorati oppure ricoperti da immagini
più complesse (texture). In questo caso a ogni punto (texel)
di ciascun triangolo si fa corrispondere un preciso punto della
mappa di bit che costituisce la texture prescelta. Si applica
poi la correzione prospettica che modifica l'aspetto delle texture
in modo da rispettare le regole della prospettiva in base alla
posizione relativa dell'osservatore.
5) È quindi possibile migliorare la resa visiva delle texture
in due modi: con la tecnica del bilinear filtering che interpola
i colori dei texel adiacenti per limitare l'effetto mosaico risultante
dal ridimensionamento delle texture di piccole dimensioni; oppure
con la tecnica Mip mapping che sfrutta versioni diverse della
stessa texture (con definizione maggiore o minore) in base alla
grandezza della superficie da ricoprire.
6) Si possono anche utilizzare texture trasparenti che lasciano intravedere
gli oggetti posizionati in secondo piano; questa funzione viene
realizzata con le tecniche alpha blending e color key transparency.
La prima descrive i texel aggiungendo un bit alla tradizionale
tripletta di valori rgb (Red Green Blue) che diventa argb (Alpha
Red Green Blue); il canale aggiuntivo determina il grado di trasparenza
del texel. La seconda, meno raffinata, agisce considerando come
invisibile un colore chiave predeterminato.
7) Per migliorare ulteriormente la resa visiva degli oggetti è
possibile sfumare i bordi delle superfici e i punti di contatto
delle texture adiacenti. Ciò si realizza interpolando i
colori delle zone poste a contatto con la tecnica detta anti-aliasing,
oppure mescolando gradualmente i texel di due superfici vicine
con la tecnica del dithering.
8) Si possono poi applicare gli effetti di illuminazione e atmosferici:
specular highlights (riflessi speculari) che producono la riflessione
dei raggi di luce incidenti sugli oggetti; fogging che genera
l'effetto nebbia sfumando gradualmente l'orizzonte verso il bianco;
depth cueing che aggiunge profondità agli ambienti chiusi
sfumando verso il nero gli oggetti in secondo piano.
9) Tutte queste operazioni devono essere svolte in sequenza milioni
di volte al secondo per ogni scena da rappresentare e richiedono
una notevole mole di calcoli; maggiore è la velocità
di calcolo, maggiore è il frame rate generato, cioè
il numero di fotogrammi prodotti al secondo (fps). Per questo
motivo è necessario utilizzare un acceleratore grafico
3D, altrimenti tutto il processo risulta lento e rende le animazioni
poco fluide e le scene poco realistiche.
10) Per velocizzare l'intero processo di rendering è opportuno
utilizzare la tecnica del doppio buffering. Questa consiste nel
calcolare un fotogramma dell'animazione della scena 3D mentre
viene visualizzato il precedente, così da renderne molto
più immediata e fluida la rappresentazione. È inoltre
opportuno che l'acceleratore grafico disponga di un coprocessore
capace di eseguire autonomamente (senza coinvolgere la cpu di
sistema) tutte le operazioni di calcolo dei triangoli (triangle
setup).
|